$Description$
现有$n$个太空站位于地球与月球之间,且有$m$艘公共交通太空船在其间来回穿梭。每个太空站可容纳无限多的人,而每艘太空船$i$只可容纳$h_i~$个人。每艘太空船将周期性地停靠一系列的太空站,例如$:(1,3,4)$表示该太空船将周期性地停靠太空站$134,134,134\cdots$。每一艘太空船从一个太空站驶往任一太空站耗时均为$1$。人们只能在太空船停靠太空站(或月球、地球)时上、下船。
初始时所有人全在地球上,太空船全在初始站。试设计一个算法,找出让所有人尽快地全部转移到月球上的运输方案。
对于给定的太空船的信息,找到让所有人尽快地全部转移到月球上的运输方案。
$Solution$
用并查集判断是否有解法。将一艘飞船可以到达的所有星球并查集连起来,最后如果地球和月球无法连接,则无解。
然后枚举答案。
考虑按时间分层拆点。令$t$时刻的$i$号站为$c_{t,i}$。
那么枚举的答案每增加1,就需要新建一层地球和太空站的点。
源点$s$向每一层的地球连一条容量为$inf$的边,每个空间站向下一时间的该空间站连一条容量为$inf$的边,代表时间的转移。
每个飞船现在在哪个星球,下一秒会飞到哪一个星球都可以计算得到,所以直接连边,容量为飞船载人量。
月球就是汇点,且每层图中没有月球。
然后跑最大流,如果最大流$\geqslant$需要转移的人数了,那么当前$ans$就是答案。
$Code$
1 |
|